//namespace NRepository.Samples.Core.Domain.Validation
//{
//    using System.Collections.Generic;
//    using System.Linq;

//    public class ValidationMessageCollection
//    {
//        private readonly List<ValidationMessage> _ValidationMesssages;

//        public ValidationMessageCollection()
//        {
//            _ValidationMesssages = new ValidationMessage[0].ToList();
//        }

//        public ValidationMessageCollection(params ValidationMessage[] validationMesssages)
//        {
//            _ValidationMesssages = validationMesssages.ToList();
//        }

//        public ValidationMessageCollection(IEnumerable<ValidationMessage> validationMesssages)
//        {
//            _ValidationMesssages = validationMesssages.ToList();
//        }

//        public void Add(ValidationMessage validationMesssage)
//        {
//            _ValidationMesssages.Add(validationMesssage);
//        }

//        public void Add(ValidationMessageCollection validationMesssageCollection)
//        {
//            _ValidationMesssages.AddRange(validationMesssageCollection);
//        }

//        public IEnumerable<ValidationMessage> AllValidationMessages
//        {
//            get { return _ValidationMesssages; }
//        }

//        public bool HasValidationIssues
//        {
//            get { return _ValidationMesssages.Any(); }
//        }

//        public bool HasErrors
//        {
//            get { return _ValidationMesssages.Any(p => p.ValidationLevel == ValidationLevelType.Error); }
//        }

//        public IEnumerable<ValidationMessage> Errors
//        {
//            get { return _ValidationMesssages.Where(p => p.ValidationLevel == ValidationLevelType.Error); }
//        }

//        public bool HasWarnings
//        {
//            get { return _ValidationMesssages.Any(p => p.ValidationLevel == ValidationLevelType.Warning); }
//        }

//        public IEnumerable<ValidationMessage> Warnings
//        {
//            get { return _ValidationMesssages.Where(p => p.ValidationLevel == ValidationLevelType.Warning); }
//        }

//        //public IDictionary<string, string> ToDictionary()
//        //{
//        //    return AllValidationMessages.ToDictionary(p => p.PropertyName, p => p.ErrorMessage);
//        //}
//    }
//}
